home *** CD-ROM | disk | FTP | other *** search
- {
- From: PHIL NICKELL
- Subj: Basic PrintUsing in PAS
- Does anyone know of any shareware or freeware routines in Turbo Pascal
- 5.5, that will allow me to format numbers or strings like the PRINTUSING
- statement in BASIC???
- }
-
- PROCEDURE printusing (mask: string; value:real);
- { Calling syntax = PRINTUSING(mask, number)
- mask can be a string label or a literal
- Example printusing('#,###,###',45.63);
- printusing('######.###,value); }
- const
- comma : char = ',';
- point : char = '.';
- minussign : char = '-';
- var
- fieldwidth, integerlength, i, j, places, pointposition: integer;
- usingcommas, decimal, negative : boolean;
- outstring, integerstring : string;
-
- begin
- negative := ( value < 0 );
- value := abs( value );
- places := 0;
- fieldwidth := length( mask );
- usingcommas := ( pos ( comma, mask ) > 0 );
- decimal := ( pos (point,mask) > 0 );
- if decimal then
- begin
- pointposition := pos(point, mask);
- places := fieldwidth - pointposition;
- END;
- str ( value:0:places, outstring );
- if usingcommas then
- begin
- J := 0;
- integerstring :=
- copy (outstring, 1, length(outstring)-places);
- integerlength := length(integerstring);
- if decimal then
- integerlength := pred(integerlength);
- for i := integerlength downto 2 do
- begin
- inc(j);
- if j mod 3 = 0 then
- insert (comma,outstring,i);
- end;
- end;
- if negative then
- outstring := minussign + outstring;
- write( outstring:fieldwidth);
- END; {PRINTUSING}
-
- BEGIN
- PrintUsing('##,###,###.##',123456.78);
- END.